#pragma once

#include <iostream>
#include <string>
#include <cstring>
#include <gmp.h>
#include <gmpxx.h>
#include "utils.h"
#include "/usr/local/include/pbc/pbc.h"
#include "mvsse.h"
#include "json.hpp"

using std::string;
using nlohmann::json;


extern const int RSA_LEN;

// owner setup 
void Setup(int lambda, json& ownerJson, json& usersJson, json& serverJson);

// owner input: pp, mk, DocSet D, KeywordSet W
// send server index I, encrypted doc C
// send users verifyInfo I
void Store(json& ownerJson, json& usersJson, json& serverJson);

// void TokenGen(string usersJsonPath, string serverJsonPath);

// void Search(string usersJsonPath, string serverJsonPath);

// void Modify(string ownerJsonPath, string usersJsonPath, string serverJsonPath);

// void Add(string ownerJsonPath, string usersJsonPath, string serverJsonPath);



